public class Solution {
    public boolean canPlaceFlowers(int[] flowerbed, int n) {
        int count = 0; // 已经可以种植的花的数量
        int m = flowerbed.length; // 花坛的长度
        int prev = -1; // 上一次种花的位置，初始为-1表示还没有种过花

        // 遍历花坛
        for (int i = 0; i < m; i++) {
            if (flowerbed[i] == 1) { // 如果当前位置已经种了花
                if (prev < 0) { // 如果是第一次遇到种花的位置
                    count += i / 2; // 计算从开头到当前位置可以种的花的数量
                } else { // 如果之前已经种过花
                    count += (i - prev - 2) / 2; // 计算两个种花位置之间的空位可以种的花的数量
                }
                prev = i; // 更新上一次种花的位置
            }
        }

        // 处理最后一次种花之后的空位
        if (prev < 0) { // 如果整个花坛都没有种过花
            count += (m + 1) / 2; // 计算整个花坛可以种的花的数量
        } else { // 如果有部分位置种了花
            count += (m - prev - 1) / 2; // 计算从最后一次种花位置到末尾可以种的花的数量
        }

        // 返回是否可以种植n朵花
        return count >= n;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        int[] flowerbed1 = {1, 0, 0, 0, 1};
        int n1 = 1;
        System.out.println(solution.canPlaceFlowers(flowerbed1, n1));
    }
}